#ifndef _EXITERROR_H_INCLUDED_
#define _EXITERROR_H_INCLUDED_


/*/////////////////////// Constantes de exiterror - BEGIN - /////////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////////////*/

#define ERROR_SUCCESS						0
#define ERROR_INVALID_OPTION					1
#define ERROR_MISSING_REQUIRED_PARAMETER			2
#define ERROR_INVALID_COMMAND_LINE				3
#define ERROR_NEED_ARGUMENTS					4
#define ERROR_ONLY_ONE_OUTPUT					5


#define ERROR_ONLY_ONE_BUBBLE                   		6
#define ERROR_ONLY_ONE_HEAP                    			7
#define ERROR_ONLY_ONE_ALGORITHM				8
#define ERROR_BAD_INPUT_FILES_COUNT				9


#define ERROR_ALLOCATING_MEMORY					13
#define ERROR_CANNOT_OPEN_INPUT_FILE				14
#define ERROR_READING_FROM_INPUT_FILE				15
#define ERROR_CANNOT_OPEN_OUTPUT_FILE				16
#define ERROR_WRITING_TO_OUTPUT					17


#define ERROR_UNEXPECTED					100

#define INFO_STR_BUBBLE_SORT					"Bubble sort"
#define INFO_STR_HEAP_SORT					"Heap sort"

#define INFO_STR_BUILDING_WORD_LIST				"Building word list...\n\n"
#define INFO_STR_DEFAULTING_ALGORITHM				"Defaulting to algorithm: \"%s\".\n\n"
#define INFO_STR_DEFAULTING_OUTPUT				"Defaulting output to: \"Standard output\".\n\n"
#define INFO_STR_SORTING_N_WORDS				"Sorting %d words with \"%s\" algorithm...\n\n"
#define INFO_STR_DONE						"\nDone.\n\n"
#define INFO_STR_WRITING_SORTED_LIST				"Writing sorted word list...\n"
/*///////////////////////// Constantes de exiterror - END - /////////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////////////*/


/*/////////////////// Variables globales que se exportan - BEGIN - //////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////////////*/

/*
Puntero al nombre del archivo que está siendo procesado
y al nombre del archivo de salida, para ser usado en caso
de error en el mensaje al usuario.
*/
const char* pprocfilename;
const char* poutputfilename;

/*/////////////////// Variables globales que se exportan - END - ////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////////////*/


/*////////////////////////// Funciones que se exportan - BEGIN - ////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////////////*/

void messageerror(const int status);

void messageinfo(const char * format, ...);

/*////////////////////////// Funciones que se exportan - END - //////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////////////*/

#endif /* _EXITERROR_H_INCLUDED_ */
